// pages/myCenter/editor/shopImg/index.js
import Common from '../../../../common/common.js';
let common = new Common;
const app = getApp();
let cropper = null;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    array: ['拍照', '从手机相册选择', '保存门头照', '取消'],
    imagePath: '',//图片裁剪返回路径
    hidden: 0,
  },

  bindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value, e)
    var that = this;
    // 0 拍照  1从手机相册选取  2保存图片  3 取消
    if (e.detail.value == 0) {
      wx.chooseImage({
        count: 1,
        sizeType: ['original', 'compressed'],
        sourceType: ['camera'],
        success(res) {
          // tempFilePath可以作为img标签的src属性显示图片
          const tempFilePaths = res.tempFilePaths[0];
          that.setData({
            imagePath: tempFilePaths,
            hidden: 1
          })
          //调用图片裁剪组件
          that.crop();
        },
        fail(res) {
          console.log(res)
        }
      })
    } else if (e.detail.value == 1) {
      wx.chooseImage({
        count: 1,
        sizeType: ['original', 'compressed'],
        sourceType: ['album'],
        success(res) {
          // tempFilePath可以作为img标签的src属性显示图片
          const tempFilePaths = res.tempFilePaths[0];
          that.setData({
            imagePath: tempFilePaths,
            hidden: 1
          })
          //调用图片裁剪组件
          that.crop();
        },
        fail(res) {
          console.log(res)
        }
      })
    } else if (e.detail.value == 2) {
      this.saveImg();
    }
  },
  // 保存图片
  saveImg: function (e) {
    let that = this;

    //获取相册授权
    wx.getSetting({
      success(res) {
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success() {
              //这里是用户同意授权后的回调
              that.saveImgToLocal();
            },
            fail() {//这里是用户拒绝授权后的回调

            }
          })
        } else {//用户已经授权过了
          that.saveImgToLocal();
        }
      }
    })

  },
  saveImgToLocal: function (e) {
    let that = this;
    wx.showLoading({
      title: '保存中...',
    })
    let imgSrc = that.data.imagePath.replace(':443', '');
    wx.downloadFile({
      url: imgSrc,
      success: function (res) {
        console.log(res);
        //图片保存到本地
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: function (data) {
            wx.hideLoading();
            wx.showToast({
              title: '保存成功',
              icon: 'success',
              duration: 2000
            })
          },
        })
      }
    })

  },

  // 授权
  handleSetting: function (e) {
    let that = this;
    // 对用户的设置进行判断，如果没有授权，即使用户返回到保存页面，显示的也是“去授权”按钮；同意授权之后才显示保存按钮

    if (!e.detail.authSetting['scope.writePhotosAlbum']) {
      // wx.showModal({
      //   title: '警告',
      //   content: '若不打开授权，则无法将图片保存在相册中！',
      //   showCancel: false
      // })
    } else {
      // wx.showModal({
      //   title: '提示',
      //   content: '您已授权，赶紧将图片保存在相册中吧！',
      //   showCancel: false
      // })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  },
  ////////  cancel ///////////////////
  crop: function (e) {
    cropper = this.selectComponent('#cropper');
    cropper.fnInit({
      imagePath: this.data.imagePath,       //*必填
      debug: true,                        //可选。是否启用调试，默认值为false。true：打印过程日志；false：关闭过程日志
      outputFileType: 'jpg',              //可选。目标文件的类型。默认值为jpg，jpg：输出jpg格式图片；png：输出png格式图片
      quality: 1,                         //可选。图片的质量。默认值为1，即最高质量。目前仅对 jpg 有效。取值范围为 (0, 1]，不在范围内时当作 1.0 处理。
      aspectRatio: 1.1,                  //可选。裁剪的宽高比，默认null，即不限制剪裁宽高比。aspectRatio需大于0
      minBoxWidthRatio: 0.2,              //可选。最小剪裁尺寸与原图尺寸的比率，默认0.15，即宽度最小剪裁到原图的0.15宽。
      minBoxHeightRatio: 0.2,             //可选。同minBoxWidthRatio，当设置aspectRatio时，minBoxHeight值设置无效。minBoxHeight值由minBoxWidth 和 aspectRatio自动计算得到。
      initialBoxWidthRatio: 0.6,          //可选。剪裁框初始大小比率。默认值0.6，即剪裁框默认宽度为图片宽度的0.6倍。
      initialBoxHeightRatio: 0.6          //可选。同initialBoxWidthRatio，当设置aspectRatio时，initialBoxHeightRatio值设置无效。initialBoxHeightRatio值由initialBoxWidthRatio 和 aspectRatio自动计算得到。
    });

  },
  fnCancel: function () {
    var that = this;
    console.log('cancel')
    //todo something
    that.setData({
      hidden: 0
    })
  },

  ////////// do crop ////////////////////
  fnSubmit: function () {
    var that = this;
    cropper.fnCrop({
      //剪裁成功的回调
      success: function (res) {
        that.setData({
          hidden: 0
        })
      },
      //剪裁失败的回调
      fail: function (res) {
        console.log(res, '失败');
        that.setData({
          hidden: 0
        })
      },
      //剪裁结束的回调
      complete: function (res) {
        that.setData({
          hidden: 0
        })
        that.uploadFile(res.tempFilePath)

      }
    });
  },
  // 图片上传
  uploadFile: function (file) {
    let that = this
    wx.showLoading({
      title: '上传中...',
      icon: 'loading'
    })
    console.log('上传的本地路径', file);
    wx.uploadFile({
      url: `${common.requestApi}/api/file-service/v1/file/uploadFile`,
      filePath: file,
      header: {
        "token": wx.getStorageSync('token')
      },
      name: 'file',
      formData: {},
      success: (res) => {
        let data = JSON.parse(res.data);
        that.setData({
          imagePath: data.result
        })
        that.updateStoreCardConfig();
        wx.hideLoading();
      },
      fail: (err) => {
        console.log(res)
        // wx.showToast({
        //   title: '图片上传失败,请重试！',
        //   icon: "none"
        // })
      }
    })
  },
  // 查询门头照片
  queryStoreCardConfig: function (e) {
    let data = {
      orgSeq: getApp().globalData.orgSeq,
      userId: app.globalData.userId,
    }
    common.requestAjax('/api/user-service/v1/StoreCard/queryStoreCardConfig', 'post', data).then(res => {
      console.log(res)
      this.setData({
        imagePath: res.data.result.headPicUrl
      })
    }).catch(err => {
      console.log(err);
    })
  },
  // 更新门头照片
  updateStoreCardConfig: function (e) {
    let data = {
      doorwayPic: null,
      orgSeq: getApp().globalData.orgSeq,
      headPicUrl: this.data.imagePath,
      userId: app.globalData.userId,
    }
    common.requestAjax('/api/user-service/v1/StoreCard/updateStoreCardConfig', 'post', data).then(res => {
      wx.showToast({
        title: '店员头像更新成功！',
        icon: 'none'
      })

      setTimeout(() => {
        wx.navigateBack({})
      }, 2000)

    }).catch(err => {
      console.log(err);
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.queryStoreCardConfig()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})